@@ -121,18 +121,11 @@ function createBenchmark2( shapeA, shapeB, shapeC ) {
121
121
var abuf ;
122
122
var bbuf ;
123
123
var cbuf ;
124
- var A ;
125
- var B ;
126
- var C ;
127
124
128
125
abuf = discreteUniform ( numel ( shapeA ) , 0 , 10 , OPTS ) ;
129
126
bbuf = discreteUniform ( numel ( shapeB ) , 0 , 10 , OPTS ) ;
130
127
cbuf = discreteUniform ( numel ( shapeC ) , 0 , 10 , OPTS ) ;
131
128
132
- A = tf . tensor ( abuf , shapeA , OPTS . dtype ) ;
133
- B = tf . tensor ( bbuf , shapeB , OPTS . dtype ) ;
134
- C = tf . tensor ( cbuf , shapeC , OPTS . dtype ) ;
135
-
136
129
return benchmark ;
137
130
138
131
/**
@@ -143,19 +136,35 @@ function createBenchmark2( shapeA, shapeB, shapeC ) {
143
136
*/
144
137
function benchmark ( b ) {
145
138
var out ;
139
+ var A ;
140
+ var B ;
141
+ var C ;
142
+ var D ;
146
143
var i ;
147
144
145
+ tf . setBackend ( 'cpu' ) ;
146
+
147
+ A = tf . tensor ( abuf , shapeA , OPTS . dtype ) ;
148
+ B = tf . tensor ( bbuf , shapeB , OPTS . dtype ) ;
149
+ C = tf . tensor ( cbuf , shapeC , OPTS . dtype ) ;
150
+
148
151
b . tic ( ) ;
149
152
for ( i = 0 ; i < b . iterations ; i ++ ) {
150
- out = tf . add ( tf . matMul ( A , B ) , C ) ;
153
+ D = tf . matMul ( A , B ) ;
154
+ out = tf . add ( D , C ) ;
151
155
if ( typeof out !== 'object' ) {
152
156
b . fail ( 'should return an object' ) ;
153
157
}
158
+ tf . dispose ( D ) ;
159
+ tf . dispose ( out ) ;
154
160
}
155
161
b . toc ( ) ;
156
162
if ( typeof out !== 'object' ) {
157
163
b . fail ( 'should return an object' ) ;
158
164
}
165
+ tf . dispose ( A ) ;
166
+ tf . dispose ( B ) ;
167
+ tf . dispose ( C ) ;
159
168
b . pass ( 'benchmark finished' ) ;
160
169
b . end ( ) ;
161
170
}
@@ -174,18 +183,11 @@ function createBenchmark3( shapeA, shapeB, shapeC ) {
174
183
var abuf ;
175
184
var bbuf ;
176
185
var cbuf ;
177
- var A ;
178
- var B ;
179
- var C ;
180
186
181
187
abuf = discreteUniform ( numel ( shapeA ) , 0 , 10 , OPTS ) ;
182
188
bbuf = discreteUniform ( numel ( shapeB ) , 0 , 10 , OPTS ) ;
183
189
cbuf = discreteUniform ( numel ( shapeC ) , 0 , 10 , OPTS ) ;
184
190
185
- A = tfnode . tensor ( abuf , shapeA , OPTS . dtype ) ;
186
- B = tfnode . tensor ( bbuf , shapeB , OPTS . dtype ) ;
187
- C = tfnode . tensor ( cbuf , shapeC , OPTS . dtype ) ;
188
-
189
191
return benchmark ;
190
192
191
193
/**
@@ -196,19 +198,35 @@ function createBenchmark3( shapeA, shapeB, shapeC ) {
196
198
*/
197
199
function benchmark ( b ) {
198
200
var out ;
201
+ var A ;
202
+ var B ;
203
+ var C ;
204
+ var D ;
199
205
var i ;
200
206
207
+ tfnode . setBackend ( 'tensorflow' ) ;
208
+
209
+ A = tfnode . tensor ( abuf , shapeA , OPTS . dtype ) ;
210
+ B = tfnode . tensor ( bbuf , shapeB , OPTS . dtype ) ;
211
+ C = tfnode . tensor ( cbuf , shapeC , OPTS . dtype ) ;
212
+
201
213
b . tic ( ) ;
202
214
for ( i = 0 ; i < b . iterations ; i ++ ) {
203
- out = tfnode . add ( tfnode . matMul ( A , B ) , C ) ;
215
+ D = tfnode . matMul ( A , B ) ;
216
+ out = tfnode . add ( D , C ) ;
204
217
if ( typeof out !== 'object' ) {
205
218
b . fail ( 'should return an object' ) ;
206
219
}
220
+ tfnode . dispose ( D ) ;
221
+ tfnode . dispose ( out ) ;
207
222
}
208
223
b . toc ( ) ;
209
224
if ( typeof out !== 'object' ) {
210
225
b . fail ( 'should return an object' ) ;
211
226
}
227
+ tfnode . dispose ( A ) ;
228
+ tfnode . dispose ( B ) ;
229
+ tfnode . dispose ( C ) ;
212
230
b . pass ( 'benchmark finished' ) ;
213
231
b . end ( ) ;
214
232
}
@@ -232,7 +250,7 @@ function main() {
232
250
var i ;
233
251
234
252
min = 1 ; // 10^min
235
- max = 3 ; // 10^max
253
+ max = 6 ; // 10^max
236
254
237
255
for ( i = min ; i <= max ; i ++ ) {
238
256
N = floor ( pow ( pow ( 10 , i ) , 1.0 / 2.0 ) ) ;
0 commit comments