visualize_helper 0.0.10.38 → 0.0.10.85

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f4b041e9c666807a1fb984af95df9d9781c5e02f
4
- data.tar.gz: 8f5b36670c44d2fcb75b6a1e572cad6f5a10b27a
3
+ metadata.gz: c59eac56652287a7c49e6fbf2d7c830661f20686
4
+ data.tar.gz: dd3019d73e50651f6a7a680464cf659ed0e3889a
5
5
  SHA512:
6
- metadata.gz: 3fb67de64e2ed37bc5aa8e342d19b5b8c90cf16ec883119dc9773d9b8efee616d5f4714b2fa312a20e41b902ce7808d2572f75a76d53e631c242602d80188980
7
- data.tar.gz: 41ad6dca5fb1349f13576de5a5affafbe3216499e67a4a740d0863c4201cc3b483389b27a127debb0636be466251739be8e4a8b807f5a35b5ff14ece30b7dbd2
6
+ metadata.gz: 2a555e4a18aa7d985de818a9551808c64ae2deda7aec36de139aa35419ba8018e4d9a8bd1b2e8b8398a36deeb2e284f802ae77a7e67e24219743e9238c3ecd0d
7
+ data.tar.gz: fa1f57811d326688452b05b7050015b91810b6df5ba1a5fe75b8bef77675f8682f14f4341c2b1d563ac4254a83468b087d727ef0f9773f45f3acb385d2ac4942
@@ -1,4 +1,7 @@
1
1
  require "mkmf"
2
2
  extension_name = "visualize_helper"
3
3
  dir_config("visualize_helper")
4
+ $CXXFLAGS += ' -fopenmp '
5
+ $CFLAGS += ' -fopenmp '
6
+ have_library('gomp', "main")
4
7
  create_makefile "visualize_helper/visualize_helper"
@@ -3,6 +3,7 @@
3
3
  #include <string.h>
4
4
  #include <stdio.h>
5
5
  #include <math.h>
6
+ #include <omp.h>
6
7
 
7
8
  void RemoveSpaces(char* source)
8
9
  {
@@ -399,7 +400,6 @@ static VALUE iterate_over_trajectories(VALUE self, VALUE trajectories, VALUE min
399
400
  }
400
401
 
401
402
  value = rb_hash_aref(hash_v,trajectory);
402
- //VALUE temp = rb_hash_aref(hash,key_t);
403
403
  min_max_aggr = min_max_period(self,min,max,rb_hash_aref(hash_t,trajectory),intervals,aggr);
404
404
  aggr = rb_ary_entry(min_max_aggr,4);
405
405
  min = rb_ary_entry(min_max_aggr,0);
@@ -412,6 +412,146 @@ static VALUE iterate_over_trajectories(VALUE self, VALUE trajectories, VALUE min
412
412
  return Qnil;
413
413
  }
414
414
 
415
+
416
+ static VALUE openmp_test(VALUE self, VALUE string) {
417
+
418
+ FILE *f = fopen("/tmp/open_mp", "w");
419
+
420
+ int nthreads, tid;
421
+
422
+ /* Fork a team of threads giving them their own copies of variables */
423
+ #pragma omp parallel private(nthreads, tid)
424
+ {
425
+
426
+ /* Obtain thread number */
427
+ tid = omp_get_thread_num();
428
+ fprintf(f,"Hello World from thread = %d\n", tid);
429
+
430
+ /* Only master thread does this */
431
+ if (tid == 0)
432
+ {
433
+ nthreads = omp_get_num_threads();
434
+ fprintf(f,"Number of threads = %d\n", nthreads);
435
+ }
436
+
437
+ } /* All threads join master thread and disband */
438
+
439
+ fclose(f);
440
+ return string;
441
+ }
442
+
443
+
444
+ // Function callback to iterate in hash of boxes or links
445
+ static int update_boxes_links(VALUE key, VALUE value, VALUE parameters){
446
+
447
+ VALUE boxes_links_result = rb_ary_entry(parameters,0);
448
+ int index = FIX2INT(rb_ary_entry(parameters,1));
449
+
450
+ VALUE boxes_links_result_index = rb_ary_entry(boxes_links_result,index);
451
+
452
+ // if the key isnt already set on the boxes_result, create it
453
+ if (rb_hash_aref(boxes_links_result_index,key) == Qnil) {
454
+ rb_hash_aset(boxes_links_result_index,key,value);
455
+ }else{
456
+ // if the key is already on the boxes_result, sum the results
457
+ rb_hash_aset(boxes_links_result_index,key, FIX2INT(rb_hash_aref(boxes_links_result_index,key)) + FIX2INT(value));
458
+ }
459
+
460
+ return ST_CONTINUE;
461
+ }
462
+
463
+
464
+
465
+
466
+ // iterate over all the trajectories and create the boxes and links needed for the dashboard (Parallel)
467
+ //static VALUE iterate_over_trajectories_parallel(VALUE self, VALUE trajectories, VALUE min, VALUE max, VALUE hash_v, VALUE hash_t, VALUE intervals, VALUE dict, VALUE agrupamento, VALUE boxes, VALUE links) {
468
+ static VALUE iterate_over_trajectories_parallel() {
469
+
470
+ //VALUE trajectory;
471
+ VALUE aggr;
472
+ //VALUE value;
473
+ //VALUE min_max_aggr;
474
+ //VALUE boxes_result = rb_ary_new();
475
+ //VALUE links_result = rb_ary_new();
476
+ int i,j;
477
+
478
+
479
+ //initialize boxes_result and links_result
480
+ //for (j = 0; j < RARRAY_LEN(intervals) + 2; j++){
481
+ // rb_ary_push(boxes_result,rb_hash_new());
482
+ // if ( j != 0) {
483
+ // rb_ary_push(links_result,rb_hash_new());
484
+ // }
485
+ //}
486
+
487
+ //#pragma omp parallel firstprivate(boxes,links,i,j)
488
+ //#pragma omp parallel private(i,j,aggr,boxes,links)
489
+ //{
490
+ // //#pragma omp for nowait
491
+ // #pragma omp for firstprivate(min,max) nowait
492
+ // for (i = 0; i < RARRAY_LEN(trajectories); i++ ){
493
+ //
494
+ //
495
+ // trajectory = rb_ary_entry(trajectories,i);
496
+
497
+ #pragma omp parallel for private(i,aggr)
498
+ for (i = 0; i < 500; i++ ){
499
+
500
+ aggr = rb_ary_new();
501
+ //for (j = 0; j < RARRAY_LEN(intervals) + 2; j++){
502
+ // rb_ary_push(aggr,rb_ary_new());
503
+ //}
504
+
505
+ //value = rb_hash_aref(hash_v,trajectory);
506
+ //min_max_aggr = min_max_period(self,min,max,rb_hash_aref(hash_t,trajectory),intervals,aggr);
507
+ //aggr = rb_ary_entry(min_max_aggr,4);
508
+ //min = rb_ary_entry(min_max_aggr,0);
509
+ //max = rb_ary_entry(min_max_aggr,1);
510
+
511
+ //generate_boxes_and_links(self,aggr,boxes,links,dict,agrupamento,value);
512
+
513
+ // }// end pragma for
514
+ }
515
+ // // must aggregate the boxes from each thread into boxes_result
516
+ // #pragma omp critical
517
+ // {
518
+ // int i;
519
+ // VALUE parameters = rb_ary_new2(2);
520
+ // // iterate over the size of boxes
521
+ // for(i = 0; i < RARRAY_LEN(boxes); i++ ){
522
+ //
523
+ // rb_ary_store(parameters,0,boxes_result);
524
+ // rb_ary_store(parameters,1,INT2FIX(i));
525
+ // VALUE hash = rb_ary_entry(boxes,i);
526
+ // //iterate over each key of the hashmap
527
+ // rb_hash_foreach(hash,update_boxes_links,parameters);
528
+ // }
529
+ // }
530
+
531
+ // // must aggregate the links from each thread into links_result
532
+ // #pragma omp critical
533
+ // {
534
+ // int i;
535
+ // VALUE parameters = rb_ary_new2(2);
536
+ // for(i = 0; i < RARRAY_LEN(links); i++ ){
537
+ //
538
+ // rb_ary_store(parameters,0,links_result);
539
+ // rb_ary_store(parameters,1,INT2FIX(i));
540
+ // VALUE hash = rb_ary_entry(links,i);
541
+ // //iterate over each key of the hashmap
542
+ // rb_hash_foreach(hash,update_boxes_links,parameters);
543
+ // }
544
+ // }
545
+
546
+ //}// and pragma parallel
547
+
548
+ return Qnil;
549
+ }
550
+
551
+
552
+
553
+
554
+
415
555
  // Main function called when the gem is loaded
416
556
  void Init_visualize_helper(void) {
417
557
 
@@ -427,9 +567,15 @@ void Init_visualize_helper(void) {
427
567
  // Register the method sort
428
568
  rb_define_singleton_method(mVisualizeHelper, "sort_uniq", sort_uniq, 2 );
429
569
 
430
- // Register the method that iterates for each trajectory
570
+ // Register the method that iterates on each trajectory
431
571
  rb_define_singleton_method(mVisualizeHelper, "iterate_over_trajectories", iterate_over_trajectories, 10);
432
572
 
433
573
  // Register the method sort
434
574
  rb_define_singleton_method(mVisualizeHelper, "join_teste", join_teste, 1 );
575
+
576
+ // Register a test with openmp
577
+ rb_define_singleton_method(mVisualizeHelper, "openmp_test", openmp_test, 1 );
578
+
579
+ // Register the method that iterates on each trajectory using openmp
580
+ rb_define_singleton_method(mVisualizeHelper, "iterate_over_trajectories_parallel", iterate_over_trajectories_parallel, 0);
435
581
  }
@@ -1,3 +1,3 @@
1
1
  module VisualizeHelper
2
- VERSION = "0.0.10.38"
2
+ VERSION = "0.0.10.85"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: visualize_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10.38
4
+ version: 0.0.10.85
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raphael Ottoni Santiago Machado de Faria
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-11 00:00:00.000000000 Z
11
+ date: 2016-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler