From owner-freebsd-stable@FreeBSD.ORG Mon Apr 12 23:38:50 2010 Return-Path: Delivered-To: freebsd-stable@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CE6F8106564A for ; Mon, 12 Apr 2010 23:38:50 +0000 (UTC) (envelope-from maho.nakata@gmail.com) Received: from mail-yx0-f175.google.com (mail-yx0-f175.google.com [209.85.210.175]) by mx1.freebsd.org (Postfix) with ESMTP id 77F4B8FC15 for ; Mon, 12 Apr 2010 23:38:50 +0000 (UTC) Received: by yxe5 with SMTP id 5so1762645yxe.3 for ; Mon, 12 Apr 2010 16:38:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:date:message-id:to :subject:from:in-reply-to:references:x-mailer:mime-version :content-type:content-transfer-encoding; bh=lxUJmL7sUwYc1khPP8pA9R6t71+rIYeHfrLUh/V8Rqs=; b=vU0jQ7jistVthB0w1mobOs7I6GPk5kpzVs2gov0tzGaBq2axV5x18+uaA2QhmEVhva ofgGvcg2LyBtIjlerXfSTyoBjhFd621cfh1x6IDXGWYQU7zYkMqkVtvPzfaojsfNts5y DgxboUvsDYv6ySCb/j6s7CzouYkJtU+vyDFsk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:date:message-id:to:subject:from:in-reply-to:references :x-mailer:mime-version:content-type:content-transfer-encoding; b=ozbD1ouLaEQQaVdovPlnl0ArJHt1wcHyh6ZIuCno4EK6Dn/Y2Q6ji1HbXqA3RItML5 8U0FrdCAuhZEEX8Qk28twqF/7MW5N4QVjZc8fYieZ9wMV1BfT6M3wGYFYjhVXP3JOO31 dYBX16+fT/v2bVHhMngqjKs9482c6p55CiyxA= Received: by 10.101.189.24 with SMTP id r24mr8274285anp.12.1271115529048; Mon, 12 Apr 2010 16:38:49 -0700 (PDT) Received: from localhost (rikad42.riken.jp [134.160.214.42]) by mx.google.com with ESMTPS id 7sm1218773yxd.44.2010.04.12.16.38.46 (version=SSLv3 cipher=RC4-MD5); Mon, 12 Apr 2010 16:38:48 -0700 (PDT) Sender: Maho NAKATA Date: Tue, 13 Apr 2010 08:38:45 +0900 (JST) Message-Id: <20100413.083845.80747594461970092.chat95@mac.com> To: freebsd-stable@freebsd.org From: Maho NAKATA In-Reply-To: <20100412150023.GA80292@icarus.home.lan> References: <20100412.131213.4959786962516027.chat95@mac.com> <4BC3311F.5060503@icyb.net.ua> <20100412150023.GA80292@icarus.home.lan> X-Mailer: Mew version 6.3 on Emacs 23.1 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Subject: Re: Only 70% of theoretical peak performance on FreeBSD 8/amd64, Corei7 920 X-BeenThere: freebsd-stable@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Production branch of FreeBSD source code List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 12 Apr 2010 23:38:51 -0000 Hi, Many thanks for interested in. I used following program to major the FLOPS. I'll provide more in details. you many need but you can change dgemm_f77 to something else to link agianst GotoBLAS (ports/math/gotoblas). I think you can use math/atlas but it takes too long time to compile... --- #include #include #include #include #include #define F77_FUNC(name,NAME) name ## _ #include #define MAXLOOP 10 unsigned long long microseconds() { rusage t; timeval tv; getrusage( RUSAGE_SELF, &t ); tv = t.ru_utime; return ((unsigned long long)tv.tv_sec)*1000000 + tv.tv_usec; } double gettimeofday_sec() { struct timeval tv; gettimeofday(&tv, NULL); return tv.tv_sec + (double)tv.tv_usec*1e-6; } int main() { int n; int incx = 1, incy = 1; double alpha = 3.14, beta = 2.717; double dgemmtime, t1, t2, t_1, t_2; for (n = 3000 ; n < 10000; n=n+100) { printf("n: %d\n", (int)n); double *A = new double[n*n]; double *B = new double[n*n]; double *C = new double[n*n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { A[i*n+j] = i * j + 1; B[i*n+j] = (i+1) * (j+1) + 1; C[i*n+j] = (i+1) - (j+1) + 1; } } t1 = (double)microseconds(); t_1 = gettimeofday_sec(); for (int p = 0 ; p < MAXLOOP; p++ ){ dgemm_f77("n", "n", &n, &n, &n, &alpha, A, &n, B, &n, &beta, C, &n); } t2 = (double)microseconds(); t_2 = gettimeofday_sec(); // dgemmtime = (t2 - t1) * 1e-6; dgemmtime = (t_2 - t_1); printf("time : %lf or %lf \n", (t2 - t1) * 1e-6, t_2 - t_1); printf("Mflops : %lf\n", ( 2.0 * (double)n * (double)n * (double)n + 2.0 * (double)n* (double)n )* MAXLOOP / dgemmtime / (1000*1000) ); delete[]C; delete[]B; delete[]A; } } -- Nakata Maho http://accc.riken.jp/maho/ , http://ja.openoffice.org/ Nakata Maho's PGP public keys: http://accc.riken.jp/maho/maho.pgp.txt