Révision 61 Splutter/GPU/SplutterGPU.py

SplutterGPU.py (revision 61)
336 336
	
337 337
  # Initialisation des variables en les CASTant correctement
338 338

  
339
  MaxMemoryXPU=0
340
  MinMemoryXPU=0
341

  
339 342
  if Device==0:
340 343
    print "Enter XPU selector based on ALU type: first selected"
341 344
    HasXPU=False
......
344 347
      for device in platform.get_devices():
345 348
        deviceType=cl.device_type.to_string(device.type)
346 349
        deviceMemory=device.max_mem_alloc_size
350
        if deviceMemory>MaxMemoryXPU:
351
          MaxMemoryXPU=deviceMemory
352
        if deviceMemory<MinMemoryXPU or MinMemoryXPU==0:
353
          MinMemoryXPU=deviceMemory
347 354
        if deviceType=="GPU" and Alu=="GPU" and not HasXPU:
348 355
          XPU=device
349
          print "GPU selected: ",device.name
356
          print "GPU selected with Allocable Memory %i: %s" % (deviceMemory,device.name)
350 357
          HasXPU=True
351 358
          MemoryXPU=deviceMemory
352 359
        if deviceType=="CPU" and Alu=="CPU" and not HasXPU:        
353 360
          XPU=device
354
          print "CPU selected: ",device.name
361
          print "CPU selected with Allocable Memory %i: %s" % (deviceMemory,device.name)
355 362
          HasXPU=True
356 363
          MemoryXPU=deviceMemory
364
          
357 365
  else:
358 366
    print "Enter XPU selector based on device number & ALU type"
359 367
    Id=1
......
363 371
      for device in platform.get_devices():
364 372
        deviceType=cl.device_type.to_string(device.type)
365 373
        deviceMemory=device.max_mem_alloc_size
374
        if deviceMemory>MaxMemoryXPU:
375
          MaxMemoryXPU=deviceMemory
376
        if deviceMemory<MinMemoryXPU or MinMemoryXPU==0:
377
          MinMemoryXPU=deviceMemory
366 378
        if Id==Device and Alu==deviceType and HasXPU==False:
367 379
          XPU=device
368
          print "CPU/GPU selected: ",device.name
380
          print "CPU/GPU selected with Allocable Memory %i: %s" % (deviceMemory,device.name)
369 381
          HasXPU=True
370 382
          MemoryXPU=deviceMemory
371 383
        Id=Id+1
......
374 386
          (Device,Alu,Id-1)
375 387
      return(0,0,0)
376 388

  
389
  print "Allocable Memory is %i, between %i and %i " % (MemoryXPU,MinMemoryXPU,MaxMemoryXPU)
390

  
377 391
  # Je cree le contexte et la queue pour son execution
378 392
  ctx = cl.Context([XPU])
379 393
  queue = cl.CommandQueue(ctx,
......
383 397
  mf = cl.mem_flags
384 398
	
385 399
  MetropolisCL = cl.Program(ctx,KERNEL_CODE_OPENCL).build(options = "-cl-mad-enable -cl-fast-relaxed-math")
386
  #MetropolisCL = cl.Program(ctx,KERNEL_CODE_OPENCL).build()
387 400
  
388 401
  MyDuration=numpy.zeros(steps)
389 402
  
......
394 407

  
395 408
  iterationsNew=numpy.uint64(iterationsCL*jobs)
396 409

  
397
  print iterations,iterationsCL,iterationsNew
398

  
399 410
  MySplutter=numpy.zeros(steps)
400 411

  
401
  MaxWorks=2**(int)(numpy.log2(MemoryXPU/4))/8
402
  print MaxWorks,2**(int)(numpy.log2(MemoryXPU/4))
412
  MaxWorks=2**(int)(numpy.log2(MinMemoryXPU/4))
413
  print MaxWorks,2**(int)(numpy.log2(MemoryXPU))
403 414

  
415
  
416
  Splutter=numpy.zeros((MaxWorks/jobs)*jobs).astype(numpy.uint32)
417

  
404 418
  for i in range(steps):
405 419
		
406 420
    #Splutter=numpy.zeros(2**(int)(numpy.log2(MemoryXPU/4))).astype(numpy.uint32)
407 421
    #Splutter=numpy.zeros(1024).astype(numpy.uint32)
408 422
 
409 423
    #Splutter=numpy.zeros(jobs).astype(numpy.uint32)
410
    Splutter=numpy.zeros((MaxWorks/jobs)*jobs).astype(numpy.uint32)
411 424

  
412 425
    print Splutter,len(Splutter)
413 426

  
427
    Splutter[:]=0
428

  
414 429
    SplutterCL = cl.Buffer(ctx, mf.WRITE_ONLY|mf.COPY_HOST_PTR,hostbuf=Splutter)
415 430

  
416 431
    if ParaStyle=='Blocks':
......
463 478
    elapsed = 1e-9*(CLLaunch.profile.end - CLLaunch.profile.start)
464 479

  
465 480
    MyDuration[i]=elapsed
466
    print Splutter,sum(Splutter)
467
    MySplutter[i]=numpy.median(Splutter)
468
    print numpy.mean(Splutter)*len(Splutter),MySplutter[i]*len(Splutter),numpy.std(Splutter)
481
    #print Splutter,sum(Splutter)
482
    #MySplutter[i]=numpy.median(Splutter)
483
    #print numpy.mean(Splutter)*len(Splutter),MySplutter[i]*len(Splutter),numpy.std(Splutter)
469 484

  
470 485
    SplutterCL.release()
471 486

  

Formats disponibles : Unified diff