중국의 슈퍼컴 by 바죠

슈퍼컴의 세계: 중국이 잡아가고 있다.

슈퍼컴퓨터가 중국 천하가 됐다. 양과 질에서 미국을 압도했다. `슈퍼컴퓨터 상위 500대`에 167개를 등재, 미국(165개)을 처음으로 숫자에서 앞섰을 뿐 아니라 1, 2위도 차지했다. 미국 슈퍼컴퓨터는 중국에 1, 2위를 내주고 3위에 그쳤다. 1위인 중국 슈퍼컴퓨터와 3위인 미국 슈퍼컴퓨터 간 속도 차이가 약 5배나 된다.

고등과학원 병렬컴퓨팅 여름학교 by 바죠

고등과학원 병렬컴퓨팅 여름학교

http://cac.kias.re.kr/2016/


General Scope

2016년은 세기적인 한 해가 기록될 것입니다. 연초부터 아인쉬타인이 예측했던 중력파를 LIGO라는 관측시설을 통해서 처음으로 관측하고 컴퓨터 분석을 통해서 이 중력파가 블랙홀 병합때문이라는 것을 알아내고, 아직 인간의 영역이라고 불리는 바둑에서 Deep Learning을 기반으로 한 알파고가 이세돌 9단을 물리쳤습니다. 이처럼 과학의 연구영역에서 뿐만 아니라 인간의 지적 유희의 영역에서 컴퓨터가 점점 그 자리를 넓히고 있습니다. 따라서 고등과학원의 거대수치계산 연구센터에서는 이러한 시대적인 흐름을 병렬 과학계산과 딥러닝이라는 주제로 담아보고자 합니다. 예년과 마찬가지로 병렬 슈퍼컴퓨팅을 위해서 MPI와 GPU 프로그래밍을 배우는 것을 기초로하고 새로이 Deep Learning 강연을 듣는 자리를 마련하였습니다.

Date & Venue

June 23(Thu.) ~ June 28(Tue.), 2016
KIAS Conference Hall #1503

Add to my calendar

Pre-requisites

Fortan, C, or Python

Please bring your laptop with a ssh program(Xmanager, VNC etc.) installed.

Lectures

MPI Programming
GPU Cuda Programming
Xeon PHI KNL Programming
Deep Learning Programming


세바 교수, 태양광이 더 싸게 먹히는 시대 by 바죠


"돌이 없어져서 석기시대가 끝나고 청동기시대가 온 것이 아니듯, 석탄이나 석유가 고갈돼서 태양광 시대로 넘어가는 게 아닙니다. 기술이 발전함에 따라 당장 2020년부터 태양광이 기존 화석 연료를 대체하기 시작할 것입니다."

"태양광은 패널만 설치하면 전기를 생산하는 데 추가 비용이 거의 들지 않아 채굴하고 태워야 하는 화석 연료보다 가격 경쟁력이 탁월하며, 발전 용량도 기술 발달로 점차 늘어나면서 화석 연료의 발전 용량을 따라잡게 된다"

"한국은 하루 최대 8000만㎾의 전기를 소비하는데, 이만큼을 생산하려면 1800㎢ 정도의 태양광 패널이 필요합니다. 많은 토지가 필요한 것처럼 보이지만 사실은 한국 국토의 2%에 불과합니다. 건물 지붕이나 주차장 등만 활용해도 한국에서 필요한 전력량을 전부 태양광으로 생산할 수 있습니다."

"내연기관 자동차는 고가든 저가든 상관없이 전기 자동차가 같은 가격 범위에 들어가는 순간 경쟁이 불가능해집니다. 1㎞를 달리는 데 드는 비용은 전기차가 내연기관차의 10분의 1에 불과합니다. 필름카메라가 디지털카메라에 자리를 내 준 이유도 사진을 찍는데 비용이 들지 않기 때문이었습니다. 전기차도 그렇게 될 것입니다."


참조 기사:
http://biz.chosun.com/site/data/html_dir/2016/05/24/2016052400034.html
http://biz.chosun.com/site/data/html_dir/2015/12/20/2015122000077.html
http://news.donga.com/home/3/all/20160116/75929305/1

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
실제로 태양광 발전의 단가를 조사해 보면 위에서 지적한 경향은 확실히 맞다.

참고 자료:
https://en.wikipedia.org/wiki/Solar_cell

태양광 단가가 계속해서 떨어지고 있다. 1 W 를 얻기 위한 투자 설비, 실제 비용을 조사해 보면 아래와 같다. 반도체 산업에서 성공사례는 매우 특이한 특징이 있다. 반도체 산업에 있어서 히트 상품의 보급에 관한이야기이다. 대부분 그 해당 제품의 공급이 지수적으로 증가하는 특징이 있다. 기술의 발전이 놀랍게 일어난다. 결코 단순히, 완만하게 증가하지 않는다.




실제로 적용된 사례




사진 출처: http://www.thesolarco.com/how-to-maintain-your-solar-panels/

idate, itime, date_and_time [fortran][python][sh] by 바죠

응용 프로그램에서 실행날짜, 실행시각 출력하기

-------------------------------------------------------------------------
          program test_idate
            integer, dimension(3) :: tarray
            call idate(tarray)
            print *, tarray(1)
            print *, tarray(2)
            print *, tarray(3)
          end program test_idate
-------------------------------------------------------------------------


      program test_itime
            integer, dimension(3) :: tarray
            call itime(tarray)
            print *, tarray(1)
            print *, tarray(2)
            print *, tarray(3)
          end program test_itime

-------------------------------------------------------------------------

       character*8 fnnd ; character*10 fnnt

       call date_and_time(date=fnnd,time=fnnt)
       write(6,'(a10,2x,a8,2x,a10)') 'date,time ', fnnd,fnnt

-------------------------------------------------------------------------
          program test_time_and_date
              character(8)  :: date
              character(10) :: time
              character(5)  :: zone
              integer,dimension(8) :: values
              ! using keyword arguments
              call date_and_time(date,time,zone,values)
              call date_and_time(DATE=date,ZONE=zone)
              call date_and_time(TIME=time)
              call date_and_time(VALUES=values)
              print '(a,2x,a,2x,a)', date, time, zone
              print '(8i5)', values
          end program test_time_and_date

https://gcc.gnu.org/onlinedocs/gfortran/DATE_005fAND_005fTIME.html
-------------------------------------------------------------------------
integer date_time(8)
       character*10 b(3)
       call date_and_time(b(1), b(2), b(3), date_time)
       print *,'date_time    array values:'
       print *,'year=',date_time(1)
       print *,'month_of_year=',date_time(2)
       print *,'day_of_month=',date_time(3)
       print *,'time difference in minutes=',date_time(4)
       print *,'hour of day=',date_time(5)
       print *,'minutes of hour=',date_time(6)
       print *,'seconds of minute=',date_time(7)
       print *,'milliseconds of second=',date_time(8)
       print *, 'DATE=',b(1)
       print *, 'TIME=',b(2)
       print *, 'ZONE=',b(3)
       end
https://docs.oracle.com/cd/E19957-01/805-4942/6j4m3r8t2/index.html
-------------------------------------------------------------------------

subroutine timestamp ( )

!*****************************************************************************80
!
!! TIMESTAMP prints the current YMDHMS date as a time stamp.
!
!  Example:
!
!    May 31 2001   9:45:54.872 AM
!
!  Modified:
!
!    31 May 2001
!
!  Author:
!
!    John Burkardt
!
!  Parameters:
!
!    None
!
  implicit none

  character ( len = 8 ) ampm
  integer d
  character ( len = 8 ) date
  integer h
  integer m
  integer mm
  character ( len = 9 ), parameter, dimension(12) :: month = (/ &
    'January  ', 'February ', 'March    ', 'April    ', &
    'May      ', 'June     ', 'July     ', 'August   ', &
    'September', 'October  ', 'November ', 'December ' /)
  integer n
  integer s
  character ( len = 10 )  time
  integer values(8)
  integer y
  character ( len = 5 ) zone

  call date_and_time ( date, time, zone, values )

  y = values(1)
  m = values(2)
  d = values(3)
  h = values(5)
  n = values(6)
  s = values(7)
  mm = values(8)

  if ( h < 12 ) then
    ampm = 'AM'
  else if ( h == 12 ) then
    if ( n == 0 .and. s == 0 ) then
      ampm = 'Noon'
    else
      ampm = 'PM'
    end if
  else
    h = h - 12
    if ( h < 12 ) then
      ampm = 'PM'
    else if ( h == 12 ) then
      if ( n == 0 .and. s == 0 ) then
        ampm = 'Midnight'
      else
        ampm = 'AM'
      end if
    end if
  end if

  write ( *, '(a,1x,i2,1x,i4,2x,i2,a1,i2.2,a1,i2.2,a1,i3.3,1x,a)' ) &
    trim ( month(m) ), d, y, h, ':', n, ':', s, '.', mm, trim ( ampm )

  return
end
-------------------------------------------------------------------------
#!/usr/bin/python
import
time; 
# This is required to include time module.

ticks
= time.time()
print
"Number of ticks since 12:00am, January 1, 1970:", ticks



--------------------------------------------------------------------------
#!/usr/bin/python
import time;
localtime
= time.asctime( time.localtime(time.time()) )
print
"Local current time :", localtime

--------------------------------------------------------------------------

          program test_time_and_date
              character(8)  :: date
              character(10) :: time
              character(5)  :: zone
              integer,dimension(8) :: values
              ! using keyword arguments
              call date_and_time(date,time,zone,values)
              call date_and_time(DATE=date,ZONE=zone)
              call date_and_time(TIME=time)
              call date_and_time(VALUES=values)
              print '(a,2x,a,2x,a)', date, time, zone
              print '(8i5))', values
          end program test_time_and_date





       character*8 date
       character*10 time
       character*5 zone
       integer ivalues(8)
       integer i,j
       integer isize,kount(1)
       integer, allocatable :: iseed(:)

       call date_and_time(date,time,zone,ivalues)
!      write(6,*) date,time,zone
       write(6,*) ivalues
       call random_seed(isize)
       allocate(iseed(isize))
       iseed=0
       call system_clock(kount(1),i,j)
       kount(1)=ivalues(8)
!      write(6,*) kount(1)

       i=min(isize,8)
       iseed(1:i)=iseed(1:i)+ivalues(1:i)
       do i=1,isize
       iseed(i)=iseed(i)+i
       enddo
       call random_seed(put=iseed)
       deallocate(iseed)

--------------------------------------------------------------------------
--------------------------------------------------------------------------
http://incredible.egloos.com/3047318

--------------------------------------------------------------------------
--------------------------------------------------------------------------
subroutine my_timer(ttime)
!-----------------------------------------------------------------------
  implicit none
  integer, parameter :: pd = kind(1.0d0)
  real(pd) :: ttime
  character(len=8) :: date
  character(len=10) :: time
  character(len=5) :: zone
  integer, dimension(8) :: values
  integer, dimension(12) :: days_in_month
  integer :: days
  days_in_month = (/ 31,28,31,30,31,30,31,31,30,31,30,31 /)
  call date_and_time(date,time,zone,values)
  if (mod(values(1),4) == 0) days_in_month(2) = 29
  days = sum(days_in_month(1:(values(2)-1)))+values(3)
  ttime = 1.0d-3*(values(8)+1.0d3*(values(7)+ &
       60*(values(6)+60*(values(5)+24*days))))
end subroutine my_timer
!-------------------------------------------------------------------------
STAMP=$(date +%Y%m%d_%H%M%S)_$RANDOM
echo $STAMP
cp CONTCAR    ../deposit/CONTCAR_$STAMP
#cp OUTCAR     ../deposit/OUTCAR_$STAMP
#cp EIGENVAL   ../deposit/EIGENVAL_$STAMP
#cp DOSCAR     ../deposit/DOSCAR_$STAMP

--------------------------------------------------------------------------
--------------------------------------------------------------------------
-------------------------------------------------------------------------
Figlet:
text banner 생성기
http://asciiset.com/figletserver.html
http://incredible.egloos.com/4839522


1 2 3 4 5 6 7 8 9 10 다음